package model

import (
	"time"
	"user_srv/basic/config"

	"gorm.io/gorm"
)

type User struct { //用户表
	Id            uint           `gorm:"column:id;type:bigint;comment:用户ID;primaryKey;not null;" json:"id"`                                      // 用户ID
	Phone         string         `gorm:"column:phone;type:varchar(20);comment:手机号;default:NULL;" json:"phone"`                                   // 手机号
	Password      string         `gorm:"column:password;type:varchar(255);comment:加密密码;default:NULL;" json:"password"`                           // 加密密码
	WechatUnionid string         `gorm:"column:wechat_unionid;type:varchar(100);comment:微信UnionID;default:NULL;" json:"wechat_unionid"`          // 微信UnionID
	QqOpenid      string         `gorm:"column:qq_openid;type:varchar(100);comment:QQ OpenID;default:NULL;" json:"qq_openid"`                    // QQ OpenID
	Nickname      string         `gorm:"column:nickname;type:varchar(50);comment:昵称;not null;default:新用户;" json:"nickname"`                      // 昵称
	Avatar        string         `gorm:"column:avatar;type:varchar(255);comment:头像URL;default:NULL;" json:"avatar"`                              // 头像URL
	Gender        uint           `gorm:"column:gender;type:tinyint;comment:性别:0-未知 1-男 2-女;default:0;" json:"gender"`                            // 性别:0-未知 1-男 2-女
	Birthday      time.Time      `gorm:"column:birthday;type:date;comment:生日;default:NULL;" json:"birthday"`                                     // 生日
	Region        string         `gorm:"column:region;type:varchar(100);comment:地理位置;default:NULL;" json:"region"`                               // 地理位置
	Signature     string         `gorm:"column:signature;type:varchar(100);comment:个性签名;default:NULL;" json:"signature"`                         // 个性签名
	AccountStatus uint           `gorm:"column:account_status;type:tinyint UNSIGNED;comment:状态:1-正常 2-冻结 3-注销;default:1;" json:"account_status"` // 状态:1-正常 2-冻结 3-注销
	RegisterTime  time.Time      `gorm:"column:register_time;type:datetime;comment:注册时间;default:CURRENT_TIMESTAMP;" json:"register_time"`        // 注册时间
	LastLoginTime time.Time      `gorm:"column:last_login_time;type:datetime;comment:最后登录时间;default:NULL;" json:"last_login_time"`               // 最后登录时间
	LoginType     uint           `gorm:"column:login_type;type:tinyint;comment:登录方式:1-手机 2-微信 3-QQ;default:1;" json:"login_type"`                // 登录方式:1-手机 2-微信 3-QQ
	IsVip         uint           `gorm:"column:is_vip;type:tinyint;comment:是否会员;default:0;" json:"is_vip"`                                       // 是否会员
	VipExpireTime time.Time      `gorm:"column:vip_expire_time;type:datetime;comment:会员到期时间;default:NULL;" json:"vip_expire_time"`               // 会员到期时间
	IsDeleted     uint           `gorm:"column:is_deleted;type:tinyint;comment:是否删除;default:0;" json:"is_deleted"`                               // 是否删除
	DeleteTime    gorm.DeletedAt `gorm:"column:delete_time;type:datetime;comment:删除时间;default:NULL;" json:"delete_time"`                         // 删除时间
	CreateTime    time.Time      `gorm:"column:create_time;type:datetime;default:CURRENT_TIMESTAMP;" json:"create_time"`
	UpdateTime    time.Time      `gorm:"column:update_time;type:datetime;default:CURRENT_TIMESTAMP;" json:"update_time"`
}

func (u *User) TableName() string {
	return "user"
}
func (u *User) GetUserInfo(where *User) error { //获取用户信息
	return config.DB.Where(where).Limit(1).Find(&u).Error
}
func (u *User) Register() error { //注册用户
	return config.DB.Create(&u).Error
}
func (u *User) UpdateUserInfo(where *User) error { //更新用户信息、或完善信息
	return config.DB.Model(&User{}).Where(where).Updates(&u).Error
}
